<?php

 // Carga de Queryx
 require_once("core/queryx.php");

 /**
  * ---------------------------------------------------------------
  * APERTURA CLASE 
  * ---------------------------------------------------------------
  * Funciones necesarias relacionadas con el apertura , esta clase necesita Queryx y esta a su vez
  * necesita de la clase Connect (en la cual deben especificarse los parametros de conexión)
  * están localizadas en engine.
  * 
  * @author Sergio Morlán Páramo
  */
 class Apertura_class extends Queryx {

     private $id, $grupo, $subgrupo, $asignatura, $profesor, $salon, $lunesInicio, $lunesFinal, $martesInicio, $martesFinal, $miercolesInicio, $miercolesFinal, $juevesInicio, $juevesFinal, $viernesInicio, $viernesFinal, $sabadoInicio, $sabadoFinal, $domingoFinal, $domingoInicio, $cupo, $periodo, $fechaInicio, $fechaFin, $status;



     /**
      * ---------------------------------------------------------------
      * CONSTRUCTOR
      * ---------------------------------------------------------------
      * @param Int $id Identificador único del Objeto (PK)
      * @param Mixed $attr String (1) atributo o Array de Strings (varios) atributo(s) requeridos
      */
     public function __construct($id = FALSE, $attr=FALSE) {
         parent::__construct();
         if ($id)
             return $this->xget($id, FALSE, $attr);

     }




     /*
      * ---------------------------------------------------------------
      * SET METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Vamos a colocar el atributo id
      * @param String $id Attr
      */
     public function setid($id) {
         $this->id = $id;

     }




     /**
      * Vamos a colocar el atributo grupo
      * @param String $grupo Attr
      */
     public function setgrupo($grupo) {
         $this->grupo = $grupo;

     }




     /**
      * Vamos a colocar el atributo subgrupo
      * @param String $subgrupo Attr
      */
     public function setsubgrupo($subgrupo) {
         $this->subgrupo = $subgrupo;

     }




     /**
      * Vamos a colocar el atributo asignatura
      * @param String $asignatura Attr
      */
     public function setasignatura($asignatura) {
         $this->asignatura = $asignatura;

     }




     /**
      * Vamos a colocar el atributo profesor
      * @param String $profesor Attr
      */
     public function setprofesor($profesor) {
         $this->profesor = $profesor;

     }




     /**
      * Vamos a colocar el atributo salon
      * @param String $salon Attr
      */
     public function setsalon($salon) {
         $this->salon = $salon;

     }




     /**
      * Vamos a colocar el atributo lunesInicio
      * @param String $lunesInicio Attr
      */
     public function setlunesInicio($lunesInicio) {
         $this->lunesInicio = $lunesInicio;

     }




     /**
      * Vamos a colocar el atributo lunesFinal
      * @param String $lunesFinal Attr
      */
     public function setlunesFinal($lunesFinal) {
         $this->lunesFinal = $lunesFinal;

     }




     /**
      * Vamos a colocar el atributo martesInicio
      * @param String $martesInicio Attr
      */
     public function setmartesInicio($martesInicio) {
         $this->martesInicio = $martesInicio;

     }




     /**
      * Vamos a colocar el atributo martesFinal
      * @param String $martesFinal Attr
      */
     public function setmartesFinal($martesFinal) {
         $this->martesFinal = $martesFinal;

     }




     /**
      * Vamos a colocar el atributo miercolesInicio
      * @param String $miercolesInicio Attr
      */
     public function setmiercolesInicio($miercolesInicio) {
         $this->miercolesInicio = $miercolesInicio;

     }




     /**
      * Vamos a colocar el atributo miercolesFinal
      * @param String $miercolesFinal Attr
      */
     public function setmiercolesFinal($miercolesFinal) {
         $this->miercolesFinal = $miercolesFinal;

     }




     /**
      * Vamos a colocar el atributo juevesInicio
      * @param String $juevesInicio Attr
      */
     public function setjuevesInicio($juevesInicio) {
         $this->juevesInicio = $juevesInicio;

     }




     /**
      * Vamos a colocar el atributo juevesFinal
      * @param String $juevesFinal Attr
      */
     public function setjuevesFinal($juevesFinal) {
         $this->juevesFinal = $juevesFinal;

     }




     /**
      * Vamos a colocar el atributo viernesInicio
      * @param String $viernesInicio Attr
      */
     public function setviernesInicio($viernesInicio) {
         $this->viernesInicio = $viernesInicio;

     }




     /**
      * Vamos a colocar el atributo viernesFinal
      * @param String $viernesFinal Attr
      */
     public function setviernesFinal($viernesFinal) {
         $this->viernesFinal = $viernesFinal;

     }




     /**
      * Vamos a colocar el atributo sabadoInicio
      * @param String $sabadoInicio Attr
      */
     public function setsabadoInicio($sabadoInicio) {
         $this->sabadoInicio = $sabadoInicio;

     }




     /**
      * Vamos a colocar el atributo sabadoFinal
      * @param String $sabadoFinal Attr
      */
     public function setsabadoFinal($sabadoFinal) {
         $this->sabadoFinal = $sabadoFinal;

     }




     /**
      * Vamos a colocar el atributo domingoFinal
      * @param String $domingoFinal Attr
      */
     public function setdomingoFinal($domingoFinal) {
         $this->domingoFinal = $domingoFinal;

     }




     /**
      * Vamos a colocar el atributo domingoInicio
      * @param String $domingoInicio Attr
      */
     public function setdomingoInicio($domingoInicio) {
         $this->domingoInicio = $domingoInicio;

     }




     /**
      * Vamos a colocar el atributo cupo
      * @param String $cupo Attr
      */
     public function setcupo($cupo) {
         $this->cupo = $cupo;

     }




     /**
      * Vamos a colocar el atributo periodo
      * @param String $periodo Attr
      */
     public function setperiodo($periodo) {
         $this->periodo = $periodo;

     }




     /**
      * Vamos a colocar el atributo fechaInicio
      * @param String $fechaInicio Attr
      */
     public function setfechaInicio($fechaInicio) {
         $this->fechaInicio = $fechaInicio;

     }




     /**
      * Vamos a colocar el atributo fechaFin
      * @param String $fechaFin Attr
      */
     public function setfechaFin($fechaFin) {
         $this->fechaFin = $fechaFin;

     }




     /**
      * Vamos a colocar el atributo status
      * @param String $status Attr
      */
     public function setstatus($status) {
         $this->status = $status;

     }




     /*
      * ---------------------------------------------------------------
      * GET METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Vamos a obtener el atributoid
      * @return String $this->id
      */
     public function id() {
         return $this->id;

     }




     /**
      * Vamos a obtener el atributogrupo
      * @return String $this->grupo
      */
     public function grupo() {
         return $this->grupo;

     }




     /**
      * Vamos a obtener el atributosubgrupo
      * @return String $this->subgrupo
      */
     public function subgrupo() {
         return $this->subgrupo;

     }




     /**
      * Vamos a obtener el atributoasignatura
      * @return String $this->asignatura
      */
     public function asignatura() {
         return $this->asignatura;

     }




     /**
      * Vamos a obtener el atributoprofesor
      * @return String $this->profesor
      */
     public function profesor() {
         return $this->profesor;

     }




     /**
      * Vamos a obtener el atributosalon
      * @return String $this->salon
      */
     public function salon() {
         return $this->salon;

     }




     /**
      * Vamos a obtener el atributolunesInicio
      * @return String $this->lunesInicio
      */
     public function lunesInicio() {
         return $this->lunesInicio;

     }




     /**
      * Vamos a obtener el atributolunesFinal
      * @return String $this->lunesFinal
      */
     public function lunesFinal() {
         return $this->lunesFinal;

     }




     /**
      * Vamos a obtener el atributomartesInicio
      * @return String $this->martesInicio
      */
     public function martesInicio() {
         return $this->martesInicio;

     }




     /**
      * Vamos a obtener el atributomartesFinal
      * @return String $this->martesFinal
      */
     public function martesFinal() {
         return $this->martesFinal;

     }




     /**
      * Vamos a obtener el atributomiercolesInicio
      * @return String $this->miercolesInicio
      */
     public function miercolesInicio() {
         return $this->miercolesInicio;

     }




     /**
      * Vamos a obtener el atributomiercolesFinal
      * @return String $this->miercolesFinal
      */
     public function miercolesFinal() {
         return $this->miercolesFinal;

     }




     /**
      * Vamos a obtener el atributojuevesInicio
      * @return String $this->juevesInicio
      */
     public function juevesInicio() {
         return $this->juevesInicio;

     }




     /**
      * Vamos a obtener el atributojuevesFinal
      * @return String $this->juevesFinal
      */
     public function juevesFinal() {
         return $this->juevesFinal;

     }




     /**
      * Vamos a obtener el atributoviernesInicio
      * @return String $this->viernesInicio
      */
     public function viernesInicio() {
         return $this->viernesInicio;

     }




     /**
      * Vamos a obtener el atributoviernesFinal
      * @return String $this->viernesFinal
      */
     public function viernesFinal() {
         return $this->viernesFinal;

     }




     /**
      * Vamos a obtener el atributosabadoInicio
      * @return String $this->sabadoInicio
      */
     public function sabadoInicio() {
         return $this->sabadoInicio;

     }




     /**
      * Vamos a obtener el atributosabadoFinal
      * @return String $this->sabadoFinal
      */
     public function sabadoFinal() {
         return $this->sabadoFinal;

     }




     /**
      * Vamos a obtener el atributodomingoFinal
      * @return String $this->domingoFinal
      */
     public function domingoFinal() {
         return $this->domingoFinal;

     }




     /**
      * Vamos a obtener el atributodomingoInicio
      * @return String $this->domingoInicio
      */
     public function domingoInicio() {
         return $this->domingoInicio;

     }




     /**
      * Vamos a obtener el atributocupo
      * @return String $this->cupo
      */
     public function cupo() {
         return $this->cupo;

     }




     /**
      * Vamos a obtener el atributoperiodo
      * @return String $this->periodo
      */
     public function periodo() {
         return $this->periodo;

     }




     /**
      * Vamos a obtener el atributofechaInicio
      * @return String $this->fechaInicio
      */
     public function fechaInicio() {
         return $this->fechaInicio;

     }




     /**
      * Vamos a obtener el atributofechaFin
      * @return String $this->fechaFin
      */
     public function fechaFin() {
         return $this->fechaFin;

     }




     /**
      * Vamos a obtener el atributostatus
      * @return String $this->status
      */
     public function status() {
         return $this->status;

     }




     /*
      * ---------------------------------------------------------------
      * BASIC METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Inserta en APERTURA
      * Previamente colocados sus atributos con métodos Set
      *
      */
     public function xnew() {
         $query = "INSERT INTO `APERTURA` (`id`, `grupo`, `subgrupo`, `asignatura`, `profesor`, `salon`, `lunesInicio`, `lunesFinal`, `martesInicio`, `martesFinal`, `miercolesInicio`, `miercolesFinal`, `juevesInicio`, `juevesFinal`, `viernesInicio`, `viernesFinal`, `sabadoInicio`, `sabadoFinal`, `domingoFinal`, `domingoInicio`, `cupo`, `periodo`, `fechaInicio`, `fechaFin`, `status`) VALUES ('" . $this->id . "', '" . $this->grupo . "', '" . $this->subgrupo . "', '" . $this->asignatura . "', '" . $this->profesor . "', '" . $this->salon . "', '" . $this->lunesInicio . "', '" . $this->lunesFinal . "', '" . $this->martesInicio . "', '" . $this->martesFinal . "', '" . $this->miercolesInicio . "', '" . $this->miercolesFinal . "', '" . $this->juevesInicio . "', '" . $this->juevesFinal . "', '" . $this->viernesInicio . "', '" . $this->viernesFinal . "', '" . $this->sabadoInicio . "', '" . $this->sabadoFinal . "', '" . $this->domingoFinal . "', '" . $this->domingoInicio . "', '" . $this->cupo . "', '" . $this->periodo . "', '" . $this->fechaInicio . "', '" . $this->fechaFin . "', '" . $this->status . "'); ";
         return $this->run_queryx($query);

     }




     /**
      * Actualiza todos los campos de APERTURA
      * Previamente colocados sus atributos actualizados con métodos Set 
      *
      * @param int $idId de APERTURA
      */
     public function xchange($id=FALSE) {
         if (!$id)
             $id = $this->id;$query = "UPDATE `APERTURA` SET `grupo` = '" . $this->grupo . "', `subgrupo` = '" . $this->subgrupo . "', `asignatura` = '" . $this->asignatura . "', `profesor` = '" . $this->profesor . "', `salon` = '" . $this->salon . "', `lunesInicio` = '" . $this->lunesInicio . "', `lunesFinal` = '" . $this->lunesFinal . "', `martesInicio` = '" . $this->martesInicio . "', `martesFinal` = '" . $this->martesFinal . "', `miercolesInicio` = '" . $this->miercolesInicio . "', `miercolesFinal` = '" . $this->miercolesFinal . "', `juevesInicio` = '" . $this->juevesInicio . "', `juevesFinal` = '" . $this->juevesFinal . "', `viernesInicio` = '" . $this->viernesInicio . "', `viernesFinal` = '" . $this->viernesFinal . "', `sabadoInicio` = '" . $this->sabadoInicio . "', `sabadoFinal` = '" . $this->sabadoFinal . "', `domingoFinal` = '" . $this->domingoFinal . "', `domingoInicio` = '" . $this->domingoInicio . "', `cupo` = '" . $this->cupo . "', `periodo` = '" . $this->periodo . "', `fechaInicio` = '" . $this->fechaInicio . "', `fechaFin` = '" . $this->fechaFin . "', `status` = '" . $this->status . "' WHERE id = '" . $p_id . "';";
         return $this->run_queryx($query);

     }




     /**
      * Elimina definitivamente de la base de datos APERTURA
      *
      * @param int $idId de APERTURA
      */
     public function xdel($id=FALSE) {
         if (!$id)
             $id = $this->id;$query = "DELETE FROM `APERTURA` WHERE `id` = '" . $p_id . "';";
         return $this->run_queryx($query);

     }




     /*
      * ---------------------------------------------------------------
      * SEARCH METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Busca y Devuleve un único registro en APERTURA
      * @access private
      * @param int $idId de APERTURA
      * @param int $field campo UNIQUE o PRIMARY KEY de APERTURA
      */
     public function xget($id, $field=FALSE, $campos=FALSE) {
         $index = "id";
         $str_campos = "*";
         if ($field)
             $index = $field;
         if ($campos) {
             $str_campos = "`id`,";
             if (is_array($campos)) {
                 for ($i = 0; $i < count($campos); $i++) {
                     $str_campos .= "`" . $campos[$i] . "`";
                     if ($i < count($campos) - 1) {
                         $str_campos .=", ";
                     }
                 }
             } else {
                 $str_campos .= "`" . $campos . "` ";
             }
         }
         $query = "SELECT $str_campos FROM `APERTURA` WHERE `$index` ='$id' LIMIT 1";
         $result = $this->run_queryx($query);
         if ($this->q_totalrows() > 0) {
             $this->xbinding($result);
             return TRUE;
         }
         return FALSE;

     }




     /**
      * Busca y Devuleve todos registro en APERTURA
      * @param Array $campos Arreglo de los Campos a Seleccionar
      * @param String $filtro Cadena con los filtros para la búsqueda
      * @return Mixed
      */
     public function xgets($p_campos=FALSE, $p_filtro=FALSE, $p_order=FALSE) {
         $apertura = NULL;
         $str_campos = "*";
         if ($field)
             $index = $field;
         if ($campos) {
             $str_campos = "`id`,";
             if (is_array($campos)) {
                 for ($i = 0; $i < count($campos); $i++) {
                     $str_campos .= "`" . $campos[$i] . "`";
                     if ($i < count($campos) - 1) {
                         $str_campos .=", ";
                     }
                 }
             } else {
                 $str_campos .= "`" . $campos . "` ";
             }
         }
         if ($p_filtro)
             $filtro = "WHERE " . $p_filtro;
         if ($p_order)
             $order = "ORDER BY `" . $p_order . "`";
         $query = "SELECT $str_campos FROM `APERTURA` $filtro $order;";
         $result = $this->run_queryx($query);
         if ($this->q_totalrows() > 0) {
             while ($row = mysql_fetch_array($result)) {
                 $apertura[] = new Apertura_class($row[0]);
             }
             return $apertura;
         }
         return FALSE;

     }




     /*
      * ---------------------------------------------------------------
      * JOIN METHODS
      * ---------------------------------------------------------------
      */



     /*
      * ---------------------------------------------------------------
      * LEAVE METHODS
      * ---------------------------------------------------------------
      */

     /*
      * ---------------------------------------------------------------
      * BINDING METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Asignación Coloca todos los atributos del objeto encontrado mediante xget()
      * Sólo soporta un resultado
      * @access private
      * @param resource $query (query) SELECT sólo registro devuelto
      *
      */
     private function xbinding($query) {
         while ($row = mysql_fetch_array($query)) {
             $this->id = (isset($row["id"])) ? $row["id"] : NULL;
             $this->grupo = (isset($row["grupo"])) ? $row["grupo"] : NULL;
             $this->subgrupo = (isset($row["subgrupo"])) ? $row["subgrupo"] : NULL;
             $this->asignatura = (isset($row["asignatura"])) ? $row["asignatura"] : NULL;
             $this->profesor = (isset($row["profesor"])) ? $row["profesor"] : NULL;
             $this->salon = (isset($row["salon"])) ? $row["salon"] : NULL;
             $this->lunesInicio = (isset($row["lunesInicio"])) ? $row["lunesInicio"] : NULL;
             $this->lunesFinal = (isset($row["lunesFinal"])) ? $row["lunesFinal"] : NULL;
             $this->martesInicio = (isset($row["martesInicio"])) ? $row["martesInicio"] : NULL;
             $this->martesFinal = (isset($row["martesFinal"])) ? $row["martesFinal"] : NULL;
             $this->miercolesInicio = (isset($row["miercolesInicio"])) ? $row["miercolesInicio"] : NULL;
             $this->miercolesFinal = (isset($row["miercolesFinal"])) ? $row["miercolesFinal"] : NULL;
             $this->juevesInicio = (isset($row["juevesInicio"])) ? $row["juevesInicio"] : NULL;
             $this->juevesFinal = (isset($row["juevesFinal"])) ? $row["juevesFinal"] : NULL;
             $this->viernesInicio = (isset($row["viernesInicio"])) ? $row["viernesInicio"] : NULL;
             $this->viernesFinal = (isset($row["viernesFinal"])) ? $row["viernesFinal"] : NULL;
             $this->sabadoInicio = (isset($row["sabadoInicio"])) ? $row["sabadoInicio"] : NULL;
             $this->sabadoFinal = (isset($row["sabadoFinal"])) ? $row["sabadoFinal"] : NULL;
             $this->domingoFinal = (isset($row["domingoFinal"])) ? $row["domingoFinal"] : NULL;
             $this->domingoInicio = (isset($row["domingoInicio"])) ? $row["domingoInicio"] : NULL;
             $this->cupo = (isset($row["cupo"])) ? $row["cupo"] : NULL;
             $this->periodo = (isset($row["periodo"])) ? $row["periodo"] : NULL;
             $this->fechaInicio = (isset($row["fechaInicio"])) ? $row["fechaInicio"] : NULL;
             $this->fechaFin = (isset($row["fechaFin"])) ? $row["fechaFin"] : NULL;
             $this->status = (isset($row["status"])) ? $row["status"] : NULL;
         }

     }




     /*
      * ---------------------------------------------------------------
      * OTHER METHODS
      * ---------------------------------------------------------------
      */



     /**
      * Vamos a obtener el ultimo mayor registro en matricula de apertura
      * @return int  
      */
     public function lastmax() {
         $query = "SELECT MAX(`id`) AS id FROM `APERTURA`";
         $row = mysql_fetch_assoc($this->run_queryx($query));
         return $row["id"];

     }




     /**
      * Retorna el siguiente registro sugerido para matricula en apertura
      * por default incrementará en 1 no es recomendable cambiar este parámetro
      * a menos que sea muy necesario
      * @param int $incremento Cuanto deseas incrementar al último registro obtenido
      * @return int El id (id) sugerido 
      */
     public function nextID($incremento = 1) {
         return $this->lastmax() + 1;

     }




 }

 